草庐IT

Java ASN.1 编译器

全部标签

c++ - 让 MSBuild 编译具有 Win32 和 Win64 平台依赖项的项目

我有一个包含10多个C++项目的大型解决方案。整个解决方案只有x64,除了项目P需要x64和win32版本(正确的在运行时加载)。项目P依赖于其他几个项目的lib文件:C和H,它们被编译成libs。P引用了C和H,如下所示:{....}{....}我想为两个平台构建项目P。我选择从一个meta-P项目中执行此操作,它像这样调用P:这允许开发人员自由更改P,然后通过构建meta-P同时构建两个版本。问题是当meta-P在项目P上调用MSBuild时,对C和H的引用受解决方案环境影响(其中事件平台始终为x64)。当谈到将Win32P链接到其适当的C.lib和H.lib时,开放解决方案配置开

c++ - 为什么我无法阻止不受欢迎的 C 风格强制转换进行编译?

有一个我无法阻止编译的不良C风格转换。不受欢迎的强制转换执行C风格的强制转换,从某个类的对象到某个其他类的非常量引用。这些类(class)是无关的。同时,我喜欢支持从同一类的对象到const引用的C风格转换。我正在提供一个公共(public)转换运算符来支持理想的转换。在这种情况下,似乎无法阻止不受欢迎的转换。转换为非常量引用无法构建(“Sandbox::B::operatorSandbox::A&()”(在第30行声明)不可访问*),不幸的是转换为const引用要么失败(错误:不止一个从“Sandbox::B”到“constSandbox::A”的转换函数适用:函数“沙盒::B::o

c++ - MIDL 编译错误 : enum with "cy"

我有一个简单的IDL文件,它只包含一个enum。其中一个标识符是cy。[uuid(2642345F-F2AB-3600-8926-26E823800902),version(1.0),]libraryMyLib{typedef[uuid(a0b0aa7b-345f-4b3a-b88f-d6cdd048e205)]enumCodes{cy,abc}Codes;};但是,MIDL不会编译它并给我一个错误,如:MIDL2025:expectinganidentifiernear"cy"我的第一个猜测是cy是MIDL中的关键字/保留字——但事实并非如此。我的第二个猜测是cy已经在某处使用过或者

c++ - 在俄语本地化的 Visual Studio 中构建时,编译器警告是乱码

我在构建解决方案时在输出中有奇怪的符号:1>WindowsForm.obj:warningLNK4248:эхЁрчЁх°хээр ыхъёхьрTypeRef(01000030)фы "SDL_Renderer";юсЁрчэхы№ч чряєёЄшЄ№1>FatLinesArray.obj:warningLNK4248:эхЁрчЁх°хээр ыхъёхьрTypeRef(01000014)фы "SDL_Renderer";юсЁрчэхы№ч чряєёЄшЄ№1>WindowsForm.obj:warningLNK4248:эхЁрчЁх°хээр ыхъёхьрTypeR

c++ - 使用 MSVC 编译的多线程应用程序在运行时失败

我已经实现了一个循环运行提供的函数的类。//Timer.h#include#include#includeclassTimer{public:Timer(conststd::chrono::millisecondsperiod,conststd::function&handler);~Timer();voidStart();voidStop();boolIsRunning()const;private:conststd::function&handler;conststd::chrono::millisecondsperiod;boolisRunning=false;mutablest

c++ - 编译器如何选择正确的重载函数?

我有一个具有以下构造函数的类:Color(constfloatred=0.0f,constfloatgreen=0.0f,constfloatblue=0.0f,constfloatalpha=1.0f);Color(constunsignedcharred,constunsignedchargreen,constunsignedcharblue,constunsignedcharalpha);Color(constunsignedlongintcolor);如果我这样调用它:Colorc{0.0f,1.0f,0.0f,1.0f};一切正常。但是如果我调用它:Colorc{78,180

C++:多态容器/迭代器与编译时概念/特征

背景这纯粹是为了教育目的。如果您不想阅读整个背景,可以跳到底部的问题。我已经编写了一个Queue接口(interface)(抽象类),以及2个基于调整大小的数组和链表的派生实现。templateclassIQueue{public:virtualvoidenqueue(Titem)=0;virtualTdequeue()=0;virtualboolisEmpty()=0;virtualintsize()=0;}templateclassLinkedListQueue:publicIQueue{...}templateclassResizingArrayQueue:publicIQueu

c++ - 为什么要在函数指针或返回函数指针的函数编译之前放几十个*?

我发现这段处理多个函数指针取消引用的代码意外编译,尽管看起来无效。这怎么能编译?它是编译器中的错误吗?我在Ubuntu14.04上使用gcc4.8.2。intaddInt(intn,intm)//function{returnn+m;}int(*(*functionFactoryPtr)(intn))(int,int);//pointerint(*(functionFactory)(intn))(int,int)//function{std::cout 最佳答案 函数左值可以隐式转换为指向函数的指针([conv.func])。在您的

c++ - 使用 -O3 或 -Ofast 来编译基准代码是否现实,或者它会删除代码吗?

当使用-O3编译下面的基准代码时,它在延迟方面的差异给我留下了深刻的印象,所以我开始怀疑编译器是否通过某种方式删除代码来“作弊”。有办法检查吗?我可以安全地使用-O3进行基准测试吗?期望速度提高15倍是否现实?没有-O3的结果:平均:239纳米最小值:230纳米(900万次迭代)-O3的结果:平均:14纳米,最小值:12纳米(900万次迭代)intiterations=stoi(argv[1]);intload=stoi(argv[2]);longlongx=0;for(inti=0;i注意:我正在使用clock_gettime来测量:longget_nano_ts(){structt

c++ - 明确定义的移位超过 32 位,没有编译器警告

这是一个愚蠢的问题,部分原因是为了好玩。我有一个“明确定义”(或“饱和”?)位掩码函数templateuint32_tmask(uint32_tx){constuint32_tMASK=N>=32?~uint32_t(0):(uint32_t(1)预期行为:uint32_tx=~uint32_t(0);//0xFFFFFFFFmask(x)=>0x000000FFmask(x)=>0x00FFFFFFmask(x)=>0xFFFFFFFFmask(x)=>0xFFFFFFFF但我不喜欢有一个未定义的代码uint32_t(1)在mask()内尽管它100%无害(不应对其进行评估。)我不想